const fs = require('fs');
const mongodb = require('mongodb');
const assert = require('assert'); // 断言(用于判断代码错误)
const MongoClient = mongodb.MongoClient;

// 定义需要连接的数据库地址
const url = 'mongodb://localhost:27017';

// 定义数据库名称
const dbName = 'test';

// 创建一个MongoClient useUnifiedTopology参数用来解决MongoDB的版本兼容问题
const client =  new MongoClient(url, {useUnifiedTopology: true});

// 连接到数据库
client.connect(err => {
  assert.ifError(err);
  console.log('Connected successful to server');
  // 切换到数据库test
  const db = client.db(dbName);
  // 在db数据库中创建一个GridFSBucket
  var bucket = new mongodb.GridFSBucket(db, {
    chunkSizeBytes: 1024, // 定义每个chunk块的最大字节大小, 默认为 255*1024B -> 255KB
    bucketName: 'my-img'  // 定义数据库中collection的名称, 默认为fs
  });

  // 通过GridFS上传文件到数据库
  fs.createReadStream('./img.jpg').
    pipe(bucket.openUploadStream('img.jpg')).
    on('error', error => {
      assert.ifError(error);
    }).on('finish', res => {
      console.log('done!', res);
      process.exit(0);
    });
});